package com.lingxu.base.system.manage.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lingxu.base.system.manage.entity.SysDepart;
import com.lingxu.base.system.manage.entity.SysUser;
import com.lingxu.base.system.manage.entity.TSysUser;
import com.lingxu.base.system.manage.vo.LoginUser;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Description: 用户信息
 * @Author: LingXu
 * @Date:   2021-01-04
 * @Version: V1.0.1
 */
public interface SysUserMapper extends BaseMapper<SysUser> {

    /**
     * 用户信息-分页列表查询
     * @param page 分页信息
     * @param sysuser 用户信息
     * @return 用户信息列表
     */
    IPage<SysUser> queryList(@Param("page") Page<SysUser> page, @Param("sysuser") SysUser sysuser);

    /**
     * 用户信息-列表查询
     * @param sysuser 用户信息
     * @return 用户信息列表
     */
    List<SysUser> queryList(@Param("sysuser") SysUser sysuser);

    /**
     * 通过角色查询用户
     * @param roleId
     * @param flag
     * @return
     */
    List<SysUser> getRoleUserList(@Param("roleId") String roleId,@Param("flag") Integer flag);

    /**
     * 根据用户名查询用户信息
     * @param userName 用户名
     * @return 用户信息
     */
    SysUser getByName(@Param("userName") String userName,@Param("flag") String flag);

    /**
     * 更新用户当前信息（组织与部门）
     * @param userId 用户id
     * @param nowDepart 选中的部门信息
     */
    void updateUserNowInfo(@Param("userId")String userId, @Param("nowDepart") SysDepart nowDepart);

    /**
     * @Author ysj闫世杰
     * @Description 一周内未修改密码提示
     * @Date 2022/4/12 16:22
     * @Param: userId
     * @return int
     **/
    Integer findNotModifyPassWordByWeek(String userId);

    LoginUser getUserInfoByName(@Param("userName") String userName,@Param("flag") String flag);

    void updateIsUse(@Param("id")String id,@Param("isuse") String isuse);

    List<SysUser> queryByDeptid(@Param("deptid")String deptid);

    String findRoleId(String id);

    void insertTSysUser(TSysUser tSysUser);

    void updateQxByUserIds(@Param("list") List<String> data,@Param("flag")String flag);

    void deleteUser(String ename);

    void deleteTUser(String ename);

    void deleteTUserByIds(@Param("list") List<String> idList);

    void updateTSysUser(@Param("id") String id,@Param("passwordEncode") String passwordEncode);

    String getLoginName(String name);

    Integer findExistModelsOrData(String userId);

    SysUser queryByName(@Param("username") String creatorName);
}
